# app/lifespan.py
### 应用生命周期管理  起个系统日志作用  感觉作用都不大。

from contextlib import asynccontextmanager
from fastapi import FastAPI
from app.utils.app_log import logger
from app.core.config import settings
from app.core.database import init_database, close_database, db_manager

@asynccontextmanager
async def lifespan(app: FastAPI):
    """应用生命周期管理"""
    # 启动事件
    await _startup_event()
    
    yield  # 应用运行期间
    
    # 关闭事件
    await _shutdown_event()

async def _startup_event():
    """应用启动事件"""
    logger.info("FastAPI应用正在启动...")
    
    # 初始化数据库（只在启用数据库时）
    if settings.enable_database:
        try:
            logger.info("正在初始化数据库...")
            success = await init_database()
            if success:
                logger.info("数据库初始化成功")
                # 初始化默认数据
                await db_manager.init_default_data()
            else:
                logger.error("数据库初始化失败")
        except Exception as e:
            logger.error(f"数据库初始化异常: {str(e)}")
    else:
        logger.info("数据库功能已禁用，跳过初始化")
    
    logger.info("FastAPI应用启动完成")

async def _shutdown_event():
    """应用关闭事件"""
    logger.info("FastAPI应用正在关闭...")
    
    # 关闭数据库连接（只在启用数据库时）
    if settings.enable_database:
        try:
            await close_database()
            logger.info("数据库连接已关闭")
        except Exception as e:
            logger.error(f"关闭数据库连接异常: {str(e)}")
    
    logger.info("FastAPI应用关闭完成")